package lang;

/**
 * @classname:Objectdemo
 * @description:
 * @author: Mr.Z
 * @date: 2020/12/7 22:28
 * @version: 0.1
 * @since:1.8
 */
public class Objectdemo {
    public static void main(String[] args) {
        User user = new User(1,"张三",20);
        User user1 = new User(1,"张三",20);
        System.out.println(user==user1);//比较的是内存地址 false
        System.out.println(user.equals(user1));//false
        System.out.println(user.hashCode());
        System.out.println(user1.hashCode());
        //Object的equals并不满足之类需求 重写父类方法
        //在java规范 重写equals 必须重写hashcode
        //优先使用hashcode比较
        //如果两个对象的哈希码值不一致 证明这两个对象肯定不等
        //2个对象的哈希码值也有可能是致的，由于底层的hash算法原因，不同对象的hash码有可能一样
        //所以不能相信
        String str1 = new String("Ma");
        String str2 = new String("Ma");
        System.out.println(str1.hashCode()==str2.hashCode());
        System.out.println(str2.hashCode());
        System.out.println(str1.equals(str2));
    }
}
